package com.credithc.eagleeye.spring.starter;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
 * 描 述: <br/>
 * 作 者: zhangjin<br/>
 * 创 建：2018年09月22日<br/>
 * 版 本：v1.0.0<br>
 * <p>
 * 历 史: (版本) 作者 时间 注释 <br/>
 */
@ConfigurationProperties(prefix = "spring.eagle.agent")
@Data
public class EagleEyeProperties {
    /**agent properties配置文件路径*/
    private String config;
    /**agent客户端名称*/
    private String clientName;
    private String platformName;
    private String env;
    private String mode;
    /**
     * redis配置
     */
    private RedisConfig redis;
    /**
     * http配置
     */
    private HttpConfig http;
    /**
     * ice配置
     */
    private IceConfig ice;
    /**
     * 插件配置
     */
    private PluginConfig plugin;

    @Data
    protected static class HttpConfig{
        /**http地址*/
        private String host;
        private String port;
    }

    @Data
    protected static class RedisConfig{
        /**redis地址*/
        private String address;
        private int maxTotal;
        private int minIdle;
        private int maxIdle;
        private long maxWaitMillis;
        private int timeout;
    }

    @Data
    protected static class IceConfig{
        /**ice地址*/
        private String locator;
        /**ice默认本地连接缓存超时时间，如果为-1，则一直保持连接到一台ice服务node节点上*/
        private int locatorCacheTimeout;
    }

    @Data
    protected static class PluginConfig{
        /**启用收集mvc请求的参数*/
        private boolean enableMvcParameter;
        /**mybatis插件是否获取SQL参数**/
        private boolean enableMybatisSql=true;
        /**mybatis插件是否保存结果参数**/
        private boolean enableMybatisResult=true;
        /**mybatis插件保留sql语句的最大长度**/
        private int mybatisMaxSqlLength=4000;
        /**mybatis插件是否转换原始的参数的sql语句**/
        private boolean enableMybatisConvertSql=true;
        /**是否打印日志*/
        private boolean enablePrintLog=false;
    }
}
